@import "tailwindcss";
@import "tw-animate-css";

@custom-variant dark (&:is(.dark *));

@theme inline {
  --color-background: var(--background);
  --color-foreground: var(--foreground);
  --font-sans: var(--font-inter-sans);
  --font-mono: var(--font-ptSans-mono);
  --color-sidebar-ring: var(--sidebar-ring);
  --color-sidebar-border: var(--sidebar-border);
  --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
  --color-sidebar-accent: var(--sidebar-accent);
  --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
  --color-sidebar-primary: var(--sidebar-primary);
  --color-sidebar-foreground: var(--sidebar-foreground);
  --color-sidebar: var(--sidebar);
  --color-chart-5: var(--chart-5);
  --color-chart-4: var(--chart-4);
  --color-chart-3: var(--chart-3);
  --color-chart-2: var(--chart-2);
  --color-chart-1: var(--chart-1);
  --color-ring: var(--ring);
  --color-input: var(--input);
  --color-border: var(--border);
  --color-destructive: var(--destructive);
  --color-accent-foreground: var(--accent-foreground);
  --color-accent: var(--accent);
  --color-muted-foreground: var(--muted-foreground);
  --color-muted: var(--muted);
  --color-secondary-foreground: var(--secondary-foreground);
  --color-secondary: var(--secondary);
  --color-primary-foreground: var(--primary-foreground);
  --color-primary: var(--primary);
  --color-popover-foreground: var(--popover-foreground);
  --color-popover: var(--popover);
  --color-card-foreground: var(--card-foreground);
  --color-card: var(--card);
  --radius-sm: calc(var(--radius) - 4px);
  --radius-md: calc(var(--radius) - 2px);
  --radius-lg: var(--radius);
  --radius-xl: calc(var(--radius) + 4px);
}

:root {
  --radius: 0.625rem;
  --background: oklch(1 0 0);
  --foreground: oklch(0.145 0 0);
  --card: oklch(1 0 0);
  --card-foreground: oklch(0.145 0 0);
  --popover: oklch(1 0 0);
  --popover-foreground: oklch(0.145 0 0);
  --primary: oklch(0.205 0 0);
  --primary-foreground: oklch(0.985 0 0);
  --secondary: oklch(0.97 0 0);
  --secondary-foreground: oklch(0.205 0 0);
  --muted: oklch(0.97 0 0);
  --muted-foreground: oklch(0.556 0 0);
  --accent: oklch(0.97 0 0);
  --accent-foreground: oklch(0.205 0 0);
  --destructive: oklch(0.577 0.245 27.325);
  --border: oklch(0.922 0 0);
  --input: oklch(0.922 0 0);
  --ring: oklch(0.708 0 0);
  --chart-1: oklch(0.646 0.222 41.116);
  --chart-2: oklch(0.6 0.118 184.704);
  --chart-3: oklch(0.398 0.07 227.392);
  --chart-4: oklch(0.828 0.189 84.429);
  --chart-5: oklch(0.769 0.188 70.08);
  --sidebar: oklch(0.985 0 0);
  --sidebar-foreground: oklch(0.145 0 0);
  --sidebar-primary: oklch(0.205 0 0);
  --sidebar-primary-foreground: oklch(0.985 0 0);
  --sidebar-accent: oklch(0.97 0 0);
  --sidebar-accent-foreground: oklch(0.205 0 0);
  --sidebar-border: oklch(0.922 0 0);
  --sidebar-ring: oklch(0.708 0 0);
}

.dark {
  --background: oklch(0.145 0 0);
  --foreground: oklch(0.985 0 0);
  --card: oklch(0.205 0 0);
  --card-foreground: oklch(0.985 0 0);
  --popover: oklch(0.205 0 0);
  --popover-foreground: oklch(0.985 0 0);
  --primary: oklch(0.922 0 0);
  --primary-foreground: oklch(0.205 0 0);
  --secondary: oklch(0.269 0 0);
  --secondary-foreground: oklch(0.985 0 0);
  --muted: oklch(0.269 0 0);
  --muted-foreground: oklch(0.708 0 0);
  --accent: oklch(0.269 0 0);
  --accent-foreground: oklch(0.985 0 0);
  --destructive: oklch(0.704 0.191 22.216);
  --border: oklch(1 0 0 / 10%);
  --input: oklch(1 0 0 / 15%);
  --ring: oklch(0.556 0 0);
  --chart-1: oklch(0.488 0.243 264.376);
  --chart-2: oklch(0.696 0.17 162.48);
  --chart-3: oklch(0.769 0.188 70.08);
  --chart-4: oklch(0.627 0.265 303.9);
  --chart-5: oklch(0.645 0.246 16.439);
  --sidebar: oklch(0.205 0 0);
  --sidebar-foreground: oklch(0.985 0 0);
  --sidebar-primary: oklch(0.488 0.243 264.376);
  --sidebar-primary-foreground: oklch(0.985 0 0);
  --sidebar-accent: oklch(0.269 0 0);
  --sidebar-accent-foreground: oklch(0.985 0 0);
  --sidebar-border: oklch(1 0 0 / 10%);
  --sidebar-ring: oklch(0.556 0 0);
}

body {
  @apply scroll-smooth
}

@layer base {
  * {
    @apply border-border outline-ring/50;
  }
  body {
    @apply bg-background text-foreground;
  }
  html {
    @apply scroll-smooth;
  }
}

.background__noisy {
  @apply bg-blend-normal pointer-events-none opacity-90;
  background-size: 25ww auto;
  background-image: url("/background_noisy.webp");
  @apply fixed w-screen h-screen -z-1 top-0 left-0;
}

.monaco-editor .margin {
  @apply !bg-neutral-900;
}
.monaco-editor .monaco-editor-background {
  @apply !bg-neutral-900;
}
.monaco-editor .line-numbers {
  @apply !text-neutral-500;
}

.matched-line {
  @apply bg-sky-500/30;
}

/* Fast liquid deformation animations */
@keyframes liquidBlob1 {
  0%, 100% {
    border-radius: 40% 60% 50% 50%;
    transform: scaleX(1) scaleY(1) rotate(0deg);
  }
  12.5% {
    border-radius: 20% 80% 70% 30%;
    transform: scaleX(1.6) scaleY(0.4) rotate(25deg);
  }
  25% {
    border-radius: 80% 20% 30% 70%;
    transform: scaleX(0.5) scaleY(2.1) rotate(-15deg);
  }
  37.5% {
    border-radius: 30% 70% 80% 20%;
    transform: scaleX(1.8) scaleY(0.6) rotate(40deg);
  }
  50% {
    border-radius: 70% 30% 20% 80%;
    transform: scaleX(0.4) scaleY(1.9) rotate(-30deg);
  }
  62.5% {
    border-radius: 25% 75% 60% 40%;
    transform: scaleX(1.5) scaleY(0.7) rotate(55deg);
  }
  75% {
    border-radius: 75% 25% 40% 60%;
    transform: scaleX(0.6) scaleY(1.7) rotate(-10deg);
  }
  87.5% {
    border-radius: 50% 50% 75% 25%;
    transform: scaleX(1.3) scaleY(0.8) rotate(35deg);
  }
}

@keyframes liquidBlob2 {
  0%, 100% {
    border-radius: 60% 40% 50% 50%;
    transform: scaleX(1) scaleY(1) rotate(12deg);
  }
  16% {
    border-radius: 15% 85% 60% 40%;
    transform: scaleX(0.3) scaleY(2.3) rotate(50deg);
  }
  32% {
    border-radius: 85% 15% 25% 75%;
    transform: scaleX(2.0) scaleY(0.5) rotate(-20deg);
  }
  48% {
    border-radius: 30% 70% 85% 15%;
    transform: scaleX(0.4) scaleY(1.8) rotate(70deg);
  }
  64% {
    border-radius: 70% 30% 15% 85%;
    transform: scaleX(1.9) scaleY(0.6) rotate(-35deg);
  }
  80% {
    border-radius: 40% 60% 70% 30%;
    transform: scaleX(0.7) scaleY(1.6) rotate(45deg);
  }
}

@keyframes liquidBlob3 {
  0%, 100% {
    border-radius: 50% 50% 40% 60%;
    transform: scaleX(1) scaleY(1) rotate(0deg);
  }
  20% {
    border-radius: 10% 90% 75% 25%;
    transform: scaleX(2.2) scaleY(0.3) rotate(-45deg);
  }
  40% {
    border-radius: 90% 10% 20% 80%;
    transform: scaleX(0.4) scaleY(2.5) rotate(60deg);
  }
  60% {
    border-radius: 25% 75% 90% 10%;
    transform: scaleX(1.7) scaleY(0.5) rotate(-25deg);
  }
  80% {
    border-radius: 75% 25% 10% 90%;
    transform: scaleX(0.6) scaleY(2.0) rotate(80deg);
  }
}

@keyframes liquidBlob4 {
  0%, 100% {
    border-radius: 45% 55% 50% 50%;
    transform: scaleX(1) scaleY(1) rotate(-15deg);
  }
  14% {
    border-radius: 90% 10% 65% 35%;
    transform: scaleX(0.2) scaleY(2.8) rotate(35deg);
  }
  28% {
    border-radius: 10% 90% 20% 80%;
    transform: scaleX(2.4) scaleY(0.4) rotate(-50deg);
  }
  42% {
    border-radius: 35% 65% 90% 10%;
    transform: scaleX(0.3) scaleY(2.1) rotate(70deg);
  }
  56% {
    border-radius: 80% 20% 10% 90%;
    transform: scaleX(2.0) scaleY(0.5) rotate(-40deg);
  }
  70% {
    border-radius: 20% 80% 55% 45%;
    transform: scaleX(0.5) scaleY(1.9) rotate(55deg);
  }
  84% {
    border-radius: 65% 35% 80% 20%;
    transform: scaleX(1.6) scaleY(0.6) rotate(-25deg);
  }
}

/* Fast flowing movement animations */
@keyframes liquidFlow1 {
  0%, 100% { transform: translate(0, 0); }
  16% { transform: translate(60px, -40px); }
  32% { transform: translate(-45px, -70px); }
  48% { transform: translate(80px, 25px); }
  64% { transform: translate(-30px, 60px); }
  80% { transform: translate(50px, -20px); }
}

@keyframes liquidFlow2 {
  0%, 100% { transform: translate(0, 0); }
  20% { transform: translate(-70px, 50px); }
  40% { transform: translate(90px, -30px); }
  60% { transform: translate(-40px, -55px); }
  80% { transform: translate(65px, 35px); }
}

@keyframes liquidFlow3 {
  0%, 100% { transform: translate(0, 0); }
  12% { transform: translate(-50px, -60px); }
  24% { transform: translate(40px, -20px); }
  36% { transform: translate(-30px, 70px); }
  48% { transform: translate(70px, 20px); }
  60% { transform: translate(-60px, -35px); }
  72% { transform: translate(35px, 55px); }
  84% { transform: translate(-25px, -45px); }
}

@keyframes liquidFlow4 {
  0%, 100% { transform: translate(0, 0); }
  14% { transform: translate(50px, 60px); }
  28% { transform: translate(-80px, -40px); }
  42% { transform: translate(30px, -90px); }
  56% { transform: translate(-55px, 45px); }
  70% { transform: translate(75px, -25px); }
  84% { transform: translate(-35px, 65px); }
}

/* Light sweep animation for buttons */
@keyframes lightSweep {
  0% {
    transform: translateX(-150%);
    opacity: 0;
  }
  8% {
    opacity: 0.3;
  }
  25% {
    opacity: 0.8;
  }
  42% {
    opacity: 0.3;
  }
  50% {
    transform: translateX(150%);
    opacity: 0;
  }
  58% {
    opacity: 0.3;
  }
  75% {
    opacity: 0.8;
  }
  92% {
    opacity: 0.3;
  }
  100% {
    transform: translateX(-150%);
    opacity: 0;
  }
}

.light-sweep {
  position: relative;
  overflow: hidden;
}

.light-sweep::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  width: 300%;
  background: linear-gradient(
    90deg,
    transparent 0%,
    transparent 20%,
    rgba(56, 189, 248, 0.1) 35%,
    rgba(56, 189, 248, 0.2) 45%,
    rgba(255, 255, 255, 0.2) 50%,
    rgba(168, 85, 247, 0.2) 55%,
    rgba(168, 85, 247, 0.1) 65%,
    transparent 80%,
    transparent 100%
  );
  animation: lightSweep 7s cubic-bezier(0.4, 0, 0.2, 1) infinite;
  pointer-events: none;
  z-index: 1;
  filter: blur(1px);
}
